StupidBeauty
Read times:742Posted at:Tue Jan 21 21:00:04 2014
- no title specified

Qt®4的Ruby教程翻译:第3章:家族价值,Chapter 3: Family Values

Screenshot: Family ValuesScreenshot: Family Values


文件:

概述

这个示例演示了如何创建亲代及子代部件。

我们尽可能保持简单,只创建一个亲代部件和一个子代部件。

require 'Qt4'

app = Qt::Application.new(ARGV)

window = Qt::Widget.new()

window.resize(200, 120)

quit = Qt::PushButton.new('Quit', window)

quit.font = Qt::Font.new('Times', 18, Qt::Font::Bold)

quit.setGeometry(10, 40, 180, 40)

Qt::Object.connect(quit, SIGNAL('clicked()'), app, SLOT('quit()'))

window.show()

app.exec()

一行行地研究

window = Qt::Widget.new()

这里,我们简单地创建一个普通的部件对象。Qt::Widget类是所有用户界面对象的基类。部件是用户界面中的基本组成成分:它从窗口系统中接收鼠标、键盘和其它事件,并且在屏幕上绘制上一个代表自身的图形。一个部件会被它的亲代部件及位于它前面的部件裁剪。

一个没有嵌套到亲代部件里去的部件,例如这里的这个部件,就会被叫作一个窗口。通常情况下,窗口都拥有它们自己的窗口边框和任务栏条目,而这些东西是由窗口系统提供的。一个不具有亲代部件的部件一定会成为一个独立的窗口。它在屏幕上的初始位置是由窗口系统控制的。

window.resize(200, 120)

我们将这个窗口的宽度设置为200像素,高度设置为120像素。

quit = Qt::PushButton.new('Quit', window)

一个子代部件诞生了。在创建这个Qt::PushButton的时候指定了一个亲代部件(window)。一个子代部件一定会显示在它的亲代部件的可视区域里。当子代部件被显示时,会被它的亲代部件的可视区域裁剪。默认情况下,它会被放置在亲代部件的左上角,即为位置(0, 0)处。

quit.setGeometry(10, 40, 180, 40)

Qt::Widget::setGeometry()函数需要4个参数:前2个参数表示该按钮的左上角的x和y坐标。坐标是相对于亲代部件的坐标而言的。后面两个参数表示这个按钮的宽度和高度。以上所用的参数所产生的结果就是一个占有着(10, 40)到(190, 80)的区域的按钮。

window.show()

当一个亲代部件被显示时,它会调用所有子代部件的show函数(那些明确使用Qt::Widget::hide()隐藏起来的子代部件除外)。

运行程序

现在这个按钮不是填满整个窗口了。而是被放置在窗口中的位置(10, 40)处,尺寸为(180, 40),原因就是我们调用了Qt::Widget::setGeometry()

练习

试着改变窗口的大小。按钮会怎么变化?如果妳给程序设置一个更大的字体的话,按钮的高度会发生什么变化?如果妳把窗口搞得非常小的话,又会怎么样?

[下一篇: 4章 ]

未知美人

Your opinions
Your name:Email:Website url:Opinion content:
- no title specified

HxLauncher: Launch Android applications by voice commands